/**
 * 【同步方法】将数据转换为number浮点数类型
 * @param data 要转换的数据
 * @param decimals 要保留小数的位数
 * @return 转换后的浮点数字
 */
function toNumber(data, decimals) {
    
    // 初始化返回数据
    let data_return = null;
    
    // 传入数据可转换执行
    if (typeof(data) == "number" || typeof(data) == "string")
    {
        // 先将data转换为字符串类型
        let str_data = '0';
        // 如果传入为数值类型
        if (typeof(data) == "number") { str_data = data.toString(); }
        // 否则使用原始值
        else if (data.length > 0) { str_data = data; }
        // 根据小数点的位置将data分割为两个部分
        let arr_onPoint = str_data.split('.');

        // 如果包含小数
        if (arr_onPoint.length >= 2)
        {
            // 传递data转换成number浮点数类型
            let num_data = parseFloat(data);
            // 如果无效则赋值为0
            num_data = num_data ? num_data : 0;
            // 要处理的小数位数
            let length_decim = arr_onPoint[1].length;
            // 如果传入了decimals参数
            if (typeof (decimals) == 'number' && decimals >= 0) { length_decim = decimals; }
            // 小数位实际倍数
            let real_decim = '1';
            // 要处理小数位有效才执行
            if (length_decim > 0) {
                // 给实际倍数末尾加个0
                for (let i = 0; i < length_decim; i++) { real_decim += '0'; }
            }
            // 转换为数字类型
            let num_decim = parseInt(real_decim);
            // 生成float数
            data_return = Math.round(num_data * num_decim) / num_decim;
        }

        // 如果仅仅是整数
        else {
            // 传递data转换成number整数类型
            let num_data = parseInt(data);
            // 如果无效则赋值为0
            data_return = num_data ? num_data : 0;
        }
    }
    
    // 返回结果数据
    return data_return;
}

export default toNumber;